#include <bits/stdc++.h>
using namespace std;
 
char *__abc147, *__xyz258, __ma369[100000];
#define __hv007() ((__abc147==__xyz258) && (__xyz258=(__abc147=__ma369)+fread(__ma369,1,100000,stdin),__abc147==__xyz258) ? EOF : *__abc147++)


int getInt(){
	int sgn = 1;
	char ch = __hv007();
	while( ch != '-' && ( ch < '0' || ch > '9' ) ) ch = __hv007();
	if ( '-' == ch ) {sgn = 0;ch=__hv007();}
 
	int ret = (int)(ch-'0');
	while( '0' <= (ch=__hv007()) && ch <= '9' ) ret = ret * 10 + (int)(ch-'0');
	return sgn ? ret : -ret;
}
 
#ifndef ONLINE_JUDGE
int const SIZE = 13;
#else
int const SIZE = 2E5+5;
#endif
 
using llt = long long int;
using pii = pair<llt, llt>;
using vi = vector<int>; 

int N, Q;
int A[SIZE];
llt B[SIZE];

llt proc(int x, int y){
	if(x == y) return B[x-1];
    return B[x-1] - B[x-y-1];
}

int main(){
#ifndef ONLINE_JUDGE
    freopen("1.txt", "r", stdin);
#endif
    N = getInt(); 
	Q = getInt();
	for(int i=0;i<N;++i) A[i] = getInt();
	
	sort(A, A+N, greater<int>());
    B[0] = A[0];
	for(int i=1;i<N;++i) B[i] = B[i-1] + A[i];

	for(int x,y,q=1;q<=Q;++q){
		x = getInt(); y = getInt();
		printf("%lld\n", proc(x, y));
	}
    return 0;
}